package com.sihan.framework.etm.service;

import com.sihan.framework.etm.common.PageRequest;
import com.framework.model.PageResult;
import com.framework.mybatis.service.BaseService;
import com.sihan.framework.etm.entity.Role;
import com.sihan.framework.etm.vo.RoleVO;
import java.util.List;
import java.util.Set;

public interface RoleService extends BaseService<Role, String> {

  /**
   * 通过用户名获取该用户的角色名称集
   *
   * @param username 用户名称
   * @return 角色名称集
   */
  Set<String> selectRolesByUsername(String username);

  /**
   * 分页查询角色信息
   *
   * @param pageRequest 分页请求对象
   * @return 分页结果对象
   */
  PageResult<RoleVO> pageRoleInfo(PageRequest pageRequest);
  
  List<RoleVO> getRoleList();

  /**
   * 添加角色信息
   *
   * @param name 角色名称
   * @param identify 角色标识
   * @param permissionIds 权限Ids
   */
  void addRole(String name, String identify, String remarks);
  
  /**
   * 分配权限
   * @param roleId
   * @return void
   * @author 张荣英
   * @date Aug 8, 2019 1:38:09 PM
   */
  void saveRolePermission(String roleId, List<String> permissionIds);

  /**
   * 更新角色信息
   *
   * @param role 角色
   */
  void updateRole(Role role);

  /**
   * 删除角色信息
   *
   * @param roleIds 角色Id
   */
  void deleteRolesByIds(List<String> roleIds);
  
  Set<String> selectPermissionByUserId(String userId);

}
